#include "stdio.h"

union wy {
    struct
    {
        unsigned char x1 : 2;
        unsigned char x2 : 2;
        unsigned char x3 : 2;
        unsigned char x4 : 2;
    } cn;
    unsigned char s;
} tmp;

int main()
{
    tmp.s = 174; // 二进制形式是10101110
    printf("tmp.s is %d\n", tmp.s);
    printf("x1 is %d\n", tmp.cn.x1);
    printf("x2 is %d\n", tmp.cn.x2);
    printf("x3 is %d\n", tmp.cn.x3);
    printf("x4 is %d\n", tmp.cn.x4);
    return 0;
}

/* 
输出的结果是2，3，2，2。
从这个结果我们就可以看出来，这个按位分解是从地位到高位的。对照表：
x4  x3  x2  x1
10 10  11  10
高位<----地位 
*/